package hook

// 钩子
type Hook interface {
	EmailData() map[string]string
}

// 项目配置
type ProjectConf struct {
	Token string               `json:"token"`
	Event Events			 `json:"event"`
}

type Events struct {
	Push EventConf	`json:"push"`
	Pull EventConf	`json:"pull"`
	Lssue EventConf	`json:"lssue"`
	Note EventConf	`json:"note"`
}

// 事件配置
type EventConf struct {
	Sell           string   `json:"sell"`
	EmailTitle     string   `json:"email_title"`
	EmailRecipient []EmailConf `json:"email_recipient"`
}

// 邮箱配置(发送者)
type EmailConf struct {
	UserName string `json:"user_name"`
	Addr string `json:"addr"`
	Pass string `json:"pass"`
	Host string `json:"host"`
	Port int    `json:"port"`
}



// User 作者
type User struct {
	ID        int64  `json:"id" description:"-"`
	Name      string `json:"name" description:"用户昵称"`
	Email     string `json:"email" description:"用户邮箱"`
	UserName  string `json:"user_name" description:"个人空间地址"`
	URL       string `json:"url" description:"个人主页"`
	AvatarURL string `json:"avatar_url" description:"用户头像"`
	Type      string `json:"type" description:"用户类型，目前固定为User"`
	SiteAdmin bool   `json:"site_admin" description:"是否为管理员"`
	Remark    string `json:"remark"  description:"用户备注名"`
}

// Project 仓库信息
type Project struct {
	ID                int64  `json:"id"`
	Name              string `json:"name" description:"仓库名"`
	Path              string `json:"path" description:"仓库空间地址"`
	FullName          string `json:"full_name" description:"完整的名字"`
	Owner             User   `json:"owner" description:"仓库所有者信息"`
	Private           bool   `json:"private" description:"是否私有"`
	URL               string `json:"url" description:"仓库对应码云地址"`
	Description       string `json:"description" description:"仓库描述"`
	CreatedAt         string `json:"created_at" description:"仓库创建时间"`
	UpdatedAt         string `json:"updated_at" description:"仓库更新时间"`
	PushedAt          string `json:"pushed_at" description:"最近一次推送时间"`
	GitURL            string `json:"git_url" description:"仓库git地址"`
	SSHURL            string `json:"ssh_url" description:"仓库ssh地址"`
	CloneURL          string `json:"clone_url" description:"仓库clone地址"`
	SvnURUL           string `json:"svn_url" description:"仓库svn地址"`
	Homepage          string `json:"homepage" description:"仓库所有者主页"`
	StargazersCount   int    `json:"stargazers_count" description:"仓库star(星星)数量"`
	WatchersCount     int    `json:"watchers_count" description:"仓库watch(关注)数量"`
	ForksCount        int    `json:"forks_count" description:"仓库fork(分支)数量"`
	Language          string `json:"language" description:"仓库编程语言"`
	License           string `json:"license" description:"仓库开源协议"`
	DefaultBranch     string `json:"default_branch" description:"仓库默认复制"`
	Namespace         string `json:"namespace" description:"仓库所属码云地址"`
	NameWithNamespace string `json:"name_with_namespace" description:"-"`
	PathWithNamespace string `json:"path_with_namespace" description:"仓库资源唯一标识"`
}

// Commit 提交信息
type Commit struct {
	ID        string   `json:"id" description:"当前提交id"`
	TreeID    string   `json:"tree_id" description:"提交树id"`
	ParentIDs []string `json:"parent_ids" description:"上一次提交id"`
	Message   string   `json:"message" description:"提交描述"`
	Timestamp string   `json:"timestamp" description:"提交时间"`
	URL       string   `json:"url" description:"提交详情查看地址"`
	Distinct  bool     `json:"distinct" description:"是否存在差异"`
	Author    User     `json:"author" description:"作者信息"`
	//Committer User     `json:"committer" description:"提交者信息"`
	Added     []string `json:"added" description:"当前提交新加入的文件"`
	Removed   []string `json:"removed" description:"当前提交被移除的文件"`
	Modified  []string `json:"modified" description:"当前提交修改过的文件"`
}

// Enterprise 企业
type Enterprise struct {
	Name string `json:"name" description:"企业名"`
	URL  string `json:"url" description:"企业git主页"`
}
